home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / unaligned / packed_struct.h < prev   
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.1 KB  |  47 lines

  1. #ifndef _LINUX_UNALIGNED_PACKED_STRUCT_H
  2. #define _LINUX_UNALIGNED_PACKED_STRUCT_H
  3.  
  4. #include <linux/kernel.h>
  5.  
  6. struct __una_u16 { u16 x __attribute__((packed)); };
  7. struct __una_u32 { u32 x __attribute__((packed)); };
  8. struct __una_u64 { u64 x __attribute__((packed)); };
  9.  
  10. static inline u16 __get_unaligned_cpu16(const void *p)
  11. {
  12.     const struct __una_u16 *ptr = (const struct __una_u16 *)p;
  13.     return ptr->x;
  14. }
  15.  
  16. static inline u32 __get_unaligned_cpu32(const void *p)
  17. {
  18.     const struct __una_u32 *ptr = (const struct __una_u32 *)p;
  19.     return ptr->x;
  20. }
  21.  
  22. static inline u64 __get_unaligned_cpu64(const void *p)
  23. {
  24.     const struct __una_u64 *ptr = (const struct __una_u64 *)p;
  25.     return ptr->x;
  26. }
  27.  
  28. static inline void __put_unaligned_cpu16(u16 val, void *p)
  29. {
  30.     struct __una_u16 *ptr = (struct __una_u16 *)p;
  31.     ptr->x = val;
  32. }
  33.  
  34. static inline void __put_unaligned_cpu32(u32 val, void *p)
  35. {
  36.     struct __una_u32 *ptr = (struct __una_u32 *)p;
  37.     ptr->x = val;
  38. }
  39.  
  40. static inline void __put_unaligned_cpu64(u64 val, void *p)
  41. {
  42.     struct __una_u64 *ptr = (struct __una_u64 *)p;
  43.     ptr->x = val;
  44. }
  45.  
  46. #endif /* _LINUX_UNALIGNED_PACKED_STRUCT_H */
  47.